const path = require('path');
const fileUtils = require('../utils/file_utils');
const WebSocket = require('ws');
// 创建websocket服务端的对象，并绑定端口号9998，
const wss = new WebSocket.Server({
  port: 9998,
});


module.exports.listen = () => {
  // 对客户端的连接进行监听
  // client代表的是客户端连接的对象
  wss.on('connection', client => {
    console.log("--- 有客户端连接成功了 ---");
    // 对客户端的连接对象进行message事件的监听
    // msg：由客户端发给服务端的数据
    client.on('message', async msg => {
      console.log("--- 客户端发送数据给服务端了 ---" + msg);
      let payload = JSON.parse(msg);
      let action = payload.action;
      if(action === "getData") {
        let filePath = "../data/" + payload.chartName + ".json";
        filePath = path.join(__dirname, filePath);
        const ret = await fileUtils.getFileJsonData(filePath);
        // 需要在服务器获取数据的基础之上，增加一个data字段
        // data的值，就是某个json文件的内容
        payload.data = ret;
        client.send(JSON.stringify(payload));
      } else {
        // 原封不动的将所接收到的数据转发给每一处于连接的客户端
        // wss.clients // 所有连接的客户端
        wss.clients.forEach(client => {
          client.send(msg);
        });
      }
      // 有服务端向客户端发送数据
      // client.send("hello socket from backed");
    })
  });
}